Data Table

Row

---
title: "NBA Stats"
output: 
  flexdashboard::flex_dashboard:
    theme:
      version: 4
      bootswatch: default
      navbar-bg: "#3b5998"
    orientation: columns
    vertical_layout: fill
    source_code: embed
---

<style>
.chart-title 
  {  
    /* chart_title  */
    font-size: 18px;
    font-family: Arial;
  }
body
  {
      /* Normal  */
      font-size: 16px;
  }
</style>

<style>
.dataTables_scrollBody {
    height:500px !important;
    max-height:500px !important;
}
.chart-stage-flex {
    overflow:auto !important;
}
</style>

```{css color tabs}
/* Set font color of inactive tab to green */
.nav-tabs-custom .nav-tabs > li > a 
  {
    color: blue;
  } 

/* Set font color of active tab to red */
.nav-tabs-custom .nav-tabs > li.active > a 
  {
    color: purple;
  } 

/* To set color on hover */
.nav-tabs-custom .nav-tabs > li.active > a:hover 
  {
    color: black;
  }

<style type="text/css"> .sidebar 
  { 
    overflow: auto; 
  } 
</style>
```

```{r setup, include=FALSE}
library(flexdashboard)
```

```{r, data/packages}
library(pacman)
pacman::p_load(tidyverse, rvest, stringr, 
               ggplot2, forcats, writexl, 
               maps, viridis, scales, 
               plotly, GGally)
```

```{r scraping & cleaning (salary)}
link = "https://hoopshype.com/salaries/players/"
page = read_html(link)

name = page %>%
  html_nodes("tbody .name") %>% html_text()
salary = page %>%
  html_nodes("tbody .hh-salaries-sorted") %>% html_text()

name <- trimws(trimws(name, "left", "\\w"), "right", "\n")
name <- trimws(trimws(name, "left", "\\w"), "right", "\t")
name <- trimws(trimws(name, "left", "\\w"), "left", "\n")
name <- trimws(trimws(name, "left", "\\w"), "left", "\t")

salary <- trimws(trimws(salary, "left", "\\w"), "right", "\t")
salary <- trimws(trimws(salary, "left", "\\w"), "left", "\n")
salary <- trimws(trimws(salary, "left", "\\w"), "left", "\t")
salary <- trimws(trimws(salary, "left", "\\w"), "left", "\\$")

nba_salary <- data.frame(name, salary)

salary <- gsub(",", "", nba_salary$salary)

nba_salary$salary <- salary

nba_salary$salary <- as.numeric(nba_salary$salary)
```

```{r scraping & cleaning (stats)}
#link2 = "https://basketball.realgm.com/nba/stats/2023/Averages/Qualified/points/All/desc/1/Regular_Season"

nba_stats = data.frame()

for (pages in c(1,2,3)) 
  {
    link2 = paste0("https://basketball.realgm.com/nba/stats/2023/Averages/Qualified/points/All/desc/", pages, "/Regular_Season")  
    page2 = read_html(link2)
    
name = page2 %>% 
  html_nodes(".nowrap") %>% html_text()
    
team = page2 %>% 
  html_nodes(".nowrap+ td") %>% html_text()

gp = page2 %>% 
  html_nodes("td:nth-child(4)") %>% html_text()

mpg = page2 %>% 
  html_nodes("td:nth-child(5)") %>% html_text()

ppg = page2 %>% 
  html_nodes("td:nth-child(6)") %>% html_text()

fgm = page2 %>% 
  html_nodes("td:nth-child(7)") %>% html_text()

fga = page2 %>% 
  html_nodes("td:nth-child(8)") %>% html_text()

fgp = page2 %>% 
  html_nodes("td:nth-child(9)") %>% html_text()

tpm = page2 %>% 
  html_nodes("td:nth-child(10)") %>% html_text()

tpa = page2 %>% 
  html_nodes("td:nth-child(11)") %>% html_text()

tpp = page2 %>% 
  html_nodes("td:nth-child(12)") %>% html_text()

ftm = page2 %>% 
  html_nodes("td:nth-child(13)") %>% html_text()

fta = page2 %>% 
  html_nodes("td:nth-child(14)") %>% html_text()

ftp = page2 %>% 
  html_nodes("td:nth-child(15)") %>% html_text()

nba_stats <- rbind(nba_stats, as.data.frame(cbind(name, team, gp, ppg, fgm, fga, fgp, tpm, tpa, tpp, ftm, fta, ftp)))
  }

nba_stats <- nba_stats %>% mutate_at(c("ppg", "fgm", "fga", 
                                       "fgp", "tpm", "tpa", 
                                       "tpp", "ftm", "fta", "ftp"), as.numeric)

```

```{r merge data}
nba <- left_join(nba_stats, nba_salary, by = "name")
```

Data Table
===

Row 
-----------------------------------------------------------------------

```{r data table}
DT::datatable(nba[,1:13], rownames = FALSE, 
              options = list(columnDefs = list(list(className = 'dt-center', targets = 1:12))))
```